package Controlador;

import java.awt.Color;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import Modelo.Profesor;
import Vista.VistaMenu;
import Vista.VistaProfesor;
import Vista.principal;

public class CtrlProfesor extends WindowAdapter implements ActionListener {
	
private VistaProfesor vistaProf;
VistaMenu vistaMenu=new VistaMenu();
	//Modelos
	private Profesor profesor=new Profesor();
	
	//Constructor de la Clase 
	public CtrlProfesor(VistaProfesor vProf)
	{
		vistaProf=vProf;
		vProf.lblAsterisco0.setVisible(false);
		vProf.lblAsterisco1.setVisible(false);
		vProf.lblAsterisco2.setVisible(false);
		if(principal.seccion.getProfesor().getCed().equals("Sin Asignar"))
			vistaProf.btnAsignar.setVisible(false);
			   else
				   vistaProf.btnReAsignar.setVisible(false);
				   
	}
	
	public void actionPerformed(ActionEvent ae) {
		
		
		if (ae.getSource()== vistaProf.btnAsignar)
		{	
			asignarProfesor("Profesor asignado exitosamente");        
			}
			
		if (ae.getSource()== vistaProf.btnReAsignar)
		{	
			asignarProfesor("Profesor Reasignado exitosamente");        
			}
			
										
		if (ae.getSource() == vistaProf.btnLimpiar) {
			limpiar();
		}
		
		if (ae.getSource()== vistaProf.btnAtras){
			int opcion = JOptionPane.showConfirmDialog(new JFrame(),"Desea ir atras?",
				     "Mensaje de Confirmacion",JOptionPane.YES_NO_OPTION,
				     JOptionPane.QUESTION_MESSAGE);
		if (opcion == JOptionPane.YES_OPTION){
			vistaProf.dispose();
		}
		}	
	}
	
	private void limpiar() {
		vistaProf.txtCedula.setText("");
		vistaProf.txtNombre.setText("");
		vistaProf.txtApellido.setText("");
		vistaProf.txtCedula.requestFocus();
	}
	
	//Metodo validarCampos
	private boolean validarCampos()
	{
		boolean sw= false;
		if ((!vistaProf.txtCedula.getText().equals("")) && (!vistaProf.txtNombre.getText().equals("")) && (!vistaProf.txtApellido.getText().equals("")))
		    sw=true;
		else{
			if(vistaProf.txtCedula.getText().equals("")){
				vistaProf.lblAsterisco0.setVisible(true);
				vistaProf.lblAsterisco0.setForeground(Color.RED);
			}
			if(vistaProf.txtNombre.getText().equals("")){
				vistaProf.lblAsterisco1.setVisible(true);
				vistaProf.lblAsterisco1.setForeground(Color.RED);
			}
			if(vistaProf.txtApellido.getText().equals("")){
				vistaProf.lblAsterisco2.setVisible(true);
				vistaProf.lblAsterisco2.setForeground(Color.RED);
	           }
			
		}
			
		return sw;
	}
	
	public void asignarProfesor(String titulo){
		  boolean cedulaValida,valCar;
          if(validarCampos()){
   	   cedulaValida=this.validarCedula(vistaProf.txtCedula.getText());
			if(cedulaValida){
			valCar=validarCaracteres(vistaProf.txtNombre.getText()+vistaProf.txtApellido.getText());
			if(valCar){
   	   profesor.setCed(vistaProf.txtCedula.getText());
   	   profesor.setNom(vistaProf.txtNombre.getText());
   	   profesor.setApe(vistaProf.txtApellido.getText());
   	   profesor.setTitulo(String.valueOf(vistaProf.jcbTitulo.getSelectedItem()));	
   	   principal.seccion.setProfesor(profesor);
   	   JOptionPane.showMessageDialog(null,titulo, 
		   "Informacion del registro", 
			JOptionPane.INFORMATION_MESSAGE);
   	    vistaProf.dispose();
   	    vistaMenu.AplicarEvaluacion.setEnabled(true);
			}else
				JOptionPane.showMessageDialog(null, "Debes introducir solo letras", 
			       	    "Error al Asignar el profesor", 
			       	    JOptionPane.ERROR_MESSAGE);
				
			}
			else
					JOptionPane.showMessageDialog(null, "Debe introducir la cedula en el formato especificado", 
		       	    "Error al Asignar el profesor", 
		       	    JOptionPane.ERROR_MESSAGE);
			
					vistaProf.txtCedula.setText("");
					vistaProf.txtCedula.requestFocus(true);
      		}	
      	    else{
      	    	JOptionPane.showMessageDialog(null, "Debe introducir todos los campos.", 
      	    	"Error de Ingreso de Usuario", 
      	    	JOptionPane.ERROR_MESSAGE);
      	    	vistaProf.txtCedula.requestFocus(true);
      		     }
		
	};
	
	public void windowClosing(WindowEvent e) {
		Window w = (Window) e.getSource();
		w.setVisible(false);
		w.dispose();
		System.out.println("Se cerro la Aplicacion!!!");
		System.exit(0);
	}
	private boolean validarCedula(String Ced){
		boolean valida=false;
		int resp;
		String numero="VEve-0123456789";
		char caracter;
		if(Ced.length()==10){
	    for(int i=0;i<Ced.length();i++){
	    	caracter=Ced.charAt(i);
	        resp=numero.indexOf(caracter);
	    	if(resp!=-1)
	    	valida=true;
	      }
		}
		return valida;
			
	}
	private boolean validarCaracteres(String campos){
		boolean valida=true;
		int resp;
		String numero="0123456789";
		char caracter;
	    for(int i=0;i<campos.length();i++){
	    	caracter=campos.charAt(i);
	        resp=numero.indexOf(caracter);
	    	if(resp!=-1)
	    	valida=false;
	      }
		return valida;
			
	}
	
	
	
	
	
}
